What is is-data-descriptor?
The is-data-descriptor npm package is used to determine if an object is a valid data descriptor. Data descriptors are object keys that have attributes like value, writable, enumerable, and configurable. This package checks if a given object conforms to the specification of a data descriptor.
What are is-data-descriptor's main functionalities?
Check if an object is a data descriptor
This feature allows you to verify if a given object is a valid data descriptor by checking its properties and their respective values.
const isDataDescriptor = require('is-data-descriptor');
const descriptor = {value: 'value', writable: true, enumerable: true, configurable: true};
const result = isDataDescriptor(descriptor); // result is true
Other packages similar to is-data-descriptor
is-descriptor
This package is more general than is-data-descriptor. It checks if an object is any kind of descriptor, including data and accessor descriptors. It is a superset of is-data-descriptor functionality.
is-accessor-descriptor
Similar to is-data-descriptor, but specifically checks if an object is a valid accessor descriptor, which includes properties like get, set, enumerable, and configurable.
kind-of
While not limited to descriptors, this utility module can check the type of any JavaScript value, including whether it is a descriptor. It is more versatile but less specialized than is-data-descriptor.
is-data-descriptor
Returns true if a value has the characteristics of a valid JavaScript data descriptor.
Install
Install with npm:
$ npm install --save is-data-descriptor
Usage
var isDataDesc = require('is-data-descriptor');
var assert = require('assert');
Examples
true
when the descriptor has valid properties with valid values.
assert.equal(isDataDesc({ value: 'foo' }), true);
assert.equal(isDataDesc({ value: function () {} }), true);
assert.equal(isDataDesc({ value: true }), true);
false
when not an object
assert.equal(isDataDesc('a'), false);
assert.equal(isDataDesc(null), false);
false
when the object has invalid properties
assert.equal(isDataDesc({ value: 'foo', enumerable: 'baz' }), false);
assert.equal(isDataDesc({ value: 'foo', configurable: 'baz' }), false);
assert.equal(isDataDesc({ value: 'foo', get() {} }), false);
assert.equal(isDataDesc({ get() {}, value: 'foo' }), false);
false
when a value is not the correct type
assert.equal(isDataDesc({ value: 'foo', enumerable: 'foo' }), false);
assert.equal(isDataDesc({ value: 'foo', configurable: 'foo' }), false);
assert.equal(isDataDesc({ value: 'foo', writable: 'foo' }), false);
Valid properties
The only valid data descriptor properties are the following:
configurable
(required)enumerable
(required)value
(optional)writable
(optional)
To be a valid data descriptor, either value
or writable
must be defined.
Invalid properties
A descriptor may have additional invalid properties (an error will not be thrown).
var foo = {};
Object.defineProperty(foo, 'bar', {
enumerable: true,
whatever: 'blah',
get() {
return 'baz';
}
});
assert.equal(foo.bar, 'baz');
Related projects
You might also be interested in these projects:
- is-accessor-descriptor: Returns true if a value has the characteristics of a valid JavaScript accessor descriptor.
- is-descriptor: Returns true if a value has the characteristics of a valid JavaScript descriptor. Works for… more